提升与let
|
|
let在块级作用域内的提升保护了变量不受外层作用域影响。在临时死亡区间内访问let定义的变量时抛出异常会促使开发者遵循更好的编码实践:先声明,后使用.
提升与const
|
|
由于在声明之前使用常量会导致JavaScript抛出异常。因此使用常量时应该始终先声明,初始化,然后再使用
提升与Function
|
|
然而substraction是使用变量声明语句声明的,虽然也被提升了,但被调用时值是undefined。因此会抛出异常TypeError: substraction is not a function。
提升与class
|
|
在类定义之前执行new Company(‘Apple’)会抛出ReferenceError异常。这很不错,因为JavaScript鼓励先声明后使用的方式